home *** CD-ROM | disk | FTP | other *** search
/ Developer Helper 1: Phil & Dave's Excellent CD / Excellent CD HFS.raw / Moof / Goodies / HyperCard Goodies / HyperCard Dev. ToolKit / Serial & MacinTalk XCMDs / XCmdForC.p < prev    next >
Text File  |  1987-07-15  |  4KB  |  127 lines

  1. {$R-}
  2. {$D+}
  3. (*
  4.     XCmdForC.p  Package of routines in Pascal, but for use from C.
  5.     All standard HyperCard callback routines.
  6.     Copyright Apple Computer, Inc.  (c) 1987.
  7.  
  8.     To compile and link this file using Macintosh Programmer's Workshop
  9.     (HyperXCmd.p and XCmdGlue.inc must be accessible):
  10.  
  11.     pascal XCmdForC.p
  12.  
  13.     See Flash.C for an example of how to use this module.  Your C file
  14.     must include HyperXCmd.h    
  15. *)
  16.  
  17. UNIT XCmdForC;
  18.  
  19. INTERFACE
  20.  
  21. USES MemTypes, QuickDraw, HyperXCmd;
  22.  
  23. TYPE Str31 = String[31];
  24.      { Str19 = String[19]; }
  25.  
  26. { You MUST call SetParamPtr first to tell the package about the parameter }
  27. { block that HyperCard supplied.  Only then can you call the other routines. }
  28.  
  29. PROCEDURE SetParamPtr(myParamPtr: XCmdPtr);
  30.  
  31.  
  32. FUNCTION EvalExpr(expr: Str255): Handle;
  33.   { Given a HyperTalk expression in ASCII, return a handle to a zero-terminated
  34.     string with the answer. }
  35.  
  36. PROCEDURE SendCardMessage(msg: Str255);
  37.   { Send a HyperCard message (command) to the current card. }
  38.  
  39. FUNCTION GetGlobal(globName: Str255): Handle;
  40.  
  41. PROCEDURE SetGlobal(globName: Str255; globValue: Handle);
  42.  
  43. FUNCTION GetFieldByName(cardFieldFlag: BOOLEAN; fieldName: Str255): Handle;
  44.  
  45. FUNCTION GetFieldByNum(cardFieldFlag: BOOLEAN; fieldNum: INTEGER): Handle;
  46.  
  47. FUNCTION GetFieldByID(cardFieldFlag: BOOLEAN; fieldID: INTEGER): Handle;
  48.  
  49. PROCEDURE SetFieldByName(cardFieldFlag: BOOLEAN; fieldName: Str255; fieldVal: Handle);
  50.  
  51. PROCEDURE SetFieldByNum(cardFieldFlag: BOOLEAN; fieldNum: INTEGER; fieldVal: Handle);
  52.  
  53. PROCEDURE SetFieldByID(cardFieldFlag: BOOLEAN; fieldID: INTEGER; fieldVal: Handle);
  54.  
  55. PROCEDURE ZeroToPas(zeroStr: Ptr; VAR pasStr: Str255);
  56.   { Convert a zero terminated string to a Pascal string.  You create the
  57.     Pascal string and pass it in as a VAR parameter.  Useful for converting
  58.     the arguments of any XCMD to Pascal strings.  (See PasToZero below). }
  59.  
  60. FUNCTION  StrToNum(str: Str31): LongInt;
  61.   { Convert ASCII of a decimal number to the number. }
  62.  
  63. FUNCTION  StrToLong(str: Str31): LongInt;
  64.   { Convert ASCII of a decimal number to the number.  Negative numbers not
  65.     accepted. }
  66.  
  67. FUNCTION StrToExt(str: Str31): Extended;
  68.  
  69.  
  70. FUNCTION StrToBool(str: Str31): BOOLEAN;
  71.   { Convert ASCII "true" and "false" to Pascal booleans. }
  72.  
  73. FUNCTION StringLength(strPtr: Ptr): LongInt;
  74.  
  75. FUNCTION StringEqual(str1,str2: Str255): BOOLEAN;
  76.  
  77. FUNCTION StringMatch(pattern: Str255; target: Ptr): Ptr;
  78.  
  79. PROCEDURE ReturnToPas(zeroStr: Ptr; VAR pasStr: Str255);
  80.  
  81. PROCEDURE ScanToReturn(VAR scanPtr: Ptr);
  82.  
  83. PROCEDURE ScanToZero(VAR scanPtr: Ptr);
  84.  
  85. PROCEDURE ZeroBytes(dstPtr: Ptr; longCount: LongInt);
  86.  
  87. FUNCTION  LongToStr(posNum: LongInt): Str31;
  88.   { Convert a longInt to decimal ASCII. }
  89.  
  90. FUNCTION  NumToStr(num: LongInt): Str31;
  91.   { Convert a longInt to decimal ASCII, using a minus sign for negative
  92.     numbers. }
  93.  
  94. FUNCTION  NumToHex(num: LongInt; nDigits: INTEGER): Str31;
  95.   { Convert a longInt to hexadecimal ASCII, using a minus sign for 
  96.     negative numbers. }
  97.  
  98. FUNCTION ExtToStr(num: Extended): Str31;
  99.  
  100. FUNCTION BoolToStr(bool: BOOLEAN): Str31;
  101.   { Convert a boolean to ASCII "true" or "false". }
  102.   
  103. FUNCTION  PasToZero(str: Str255): Handle;
  104.   { Convert a pascal string to a zero-terminated string.  You'll need to do
  105.     this for any result or argument you return to HyperTalk. }
  106.  
  107.     
  108. IMPLEMENTATION
  109.  
  110. VAR    paramPtr:    XCmdPtr;    {global set by SetParamPtr}
  111.  
  112. PROCEDURE SetParamPtr(myParamPtr: XCmdPtr);
  113. { You must call this to tell the package about the parameter block }
  114. { that HyperCard supplied.  Only then can you call the other routines. }
  115.   BEGIN
  116.     paramPtr := myParamPtr;
  117.   END;
  118.   
  119.   
  120. {$I XCmdGlue.inc }
  121.  
  122.  
  123. END.
  124.  
  125.  
  126.  
  127.